Introducción
Los DID son URI asociados a un sujeto y junto con un DID Document permiten interacciones confiables asociadas a ese sujeto. Esta diseñado para que el controlador de un DID brinde control sobre él sin requerir el permiso de ninguna otra parte. Son identificadores descentralizados e interoperables que fueron creados para desvincularse de los identificadores centralizados.
Did Document
Estos DID resuelven un DID DOCUMENT que es elemento asociado a un DID, mediante el cual podemos obtener informacion del mismo y asi comunicarnos con ese DID. Entonces el did documet solo posee informacion para poder comunicarnos con el mundo exterior, no debe contar con datos que identifiquen al sujeto del did. El DID anterior resuelve el siguiente DID Document.
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/ed25519-2020/v1"
]
"id": "did:example:123456789abcdefghi",
"authentication": [{
"id": "did:example:123456789abcdefghi#keys-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:example:123456789abcdefghi",
"publicKeyMultibase": "zH3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
}]
}
Ejemplo de did document obtenido de W3C
Verification method y Verification relationship
Lo que nos va a permitir comunicarnos con ese did va a estar dentro de los verification methods del did document.
Es necesario diferenciar lo que es un verification method y una verification relationship.
Por un lado, debemos entender que los verification methods estan compuestos por claves publicas conocidas a travez del Did Document y que nos permiten la comunicacion con ese DID.
Esas claves públicas nos sirven para verificar firmas, pero además estan permisionadas, y a esos permisos los llamamos verification relationships, que describen el motivo para el cual queremos usar una clave pública en particular.
En el did document de ejemplo lo que vemos en authentication serian las claves que se utilizan para autenticarse. En ese caso podemos ver que en la misma verification relationship tenemos el verification method pero no siempre se representa de esta manera. Puede pasar que en un did document nos encontremos que los verification methods estan separados y desacoplados de las verification relationships.
Entonces las verification relationships son aquellos que definen para qué podemos usar una clave.
En otras palabras, un verification method es una clave publica mediante la cual alguien puede comunicarse con ese did firmando con su clave privada, generandose una clave compartida entre ambas partes, puediendo el receptor desencriptar ese mensaje con su clave privada conociendo la clave publica del emisor a traves de su did document.
Ejemplo
En el ejemplo a a continuacion se puede observar un Did Document en el que los verification methods estan totalmente desacoplados a las verification relationships, las cuales tienen una seccion segun su finalidad, refiriendose a las claves mediante su id.
En este caso particular vemos algunas verification relationships que se utilizan para authenticar, emitir una credencial o para la comunicacion con otro did.